package pe.com.bbva.pct.web.jsf;

import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;

import javax.annotation.PostConstruct;
import javax.faces.bean.ManagedBean;
import javax.faces.bean.SessionScoped;
import javax.faces.model.SelectItem;

import pe.com.bbva.pct.domain.Listado;
import pe.com.bbva.pct.domain.Valor;
import pe.com.bbva.pct.service.ListadoService;
import pe.com.bbva.pct.util.ConstantesGenerales;
import pe.com.bbva.pct.util.SingletonUtil;
import pe.com.bbva.pct.util.SpringJSFUtil;

@ManagedBean(name = "listadoBean")
@SessionScoped
public class ListadoBean {

	private List<Listado> listados;
	private String listadoService="listadoService";
	private HashMap<Long , List<Valor>> detalleListadoMap;
	private ArrayList<SelectItem> listaEstados;
	private ArrayList<SelectItem> listaEstadosRegistro;
	private ArrayList<SelectItem> listaTipoFuenteFiltro;
	private ArrayList<SelectItem> listaTipoEntradaSalidaFiltro;
	private ArrayList<SelectItem> listaTipoEntradaSalidaRegistro;
	private ArrayList<SelectItem> listaTipoFuenteRegistro;
	private ArrayList<SelectItem> listadoTipoDatoRegistro;
	private ArrayList<SelectItem> listaTipoEjecucion;
	

	@PostConstruct
	public void cargaPostConstruct(){						
		try {
			listados = getListadoService().obtenerListados();
			detalleListadoMap = getListadoService().obtenerDetalleListadoMap();					
		} catch (Exception e) {
			e.printStackTrace();
		}
	}
	
	
	

	


	public ListadoBean() {
		
		
	}

	public ArrayList<SelectItem> getListaTipoEjecucion() {
		return SingletonUtil.obtenerDetalleListados(detalleListadoMap,ConstantesGenerales.LISTADO_TIPO_EJECUCION,ConstantesGenerales.SELECCIONE, ConstantesGenerales.VALOR_SELECCIONE);
	}

	
	public ArrayList<SelectItem> getListadoTipoDatoRegistro() {
		return SingletonUtil.obtenerDetalleListados(detalleListadoMap,ConstantesGenerales.LISTADO_TIPO_DATO,ConstantesGenerales.SELECCIONE, ConstantesGenerales.VALOR_SELECCIONE);
	}

	public ArrayList<SelectItem> getListaTipoEntradaSalidaRegistro() {
		return SingletonUtil.obtenerDetalleListados(detalleListadoMap,ConstantesGenerales.LISTADO_ENTRADA_SALIDA,null,null);
	}


	public ArrayList<SelectItem> getListaTipoFuenteRegistro() {
		return SingletonUtil.obtenerDetalleListados(detalleListadoMap,ConstantesGenerales.LISTADO_TIPO_FUENTE,null, null);
	}


	public ArrayList<SelectItem> getListaEstados() {
		return SingletonUtil.obtenerDetalleListados(detalleListadoMap,ConstantesGenerales.LISTADO_ESTADOS,ConstantesGenerales.TODOS, ConstantesGenerales.VALOR_TODOS);
	}

	public ArrayList<SelectItem> getListaTipoFuenteFiltro() {
		return SingletonUtil.obtenerDetalleListados(detalleListadoMap,ConstantesGenerales.LISTADO_TIPO_FUENTE,ConstantesGenerales.TODOS, ConstantesGenerales.VALOR_TODOS);
	}

	public ArrayList<SelectItem> getListaTipoEntradaSalidaFiltro() {
		return SingletonUtil.obtenerDetalleListados(detalleListadoMap,ConstantesGenerales.LISTADO_ENTRADA_SALIDA,ConstantesGenerales.TODOS, ConstantesGenerales.VALOR_TODOS);
	}


	public ListadoService getListadoService() {
		return SpringJSFUtil.getBean(listadoService);
	}

	public List<Listado> getListados() {
		return listados;
	}

	public void setListados(List<Listado> listados) {
		this.listados = listados;
	}

	public HashMap<Long, List<Valor>> getDetalleListadoMap() {
		return detalleListadoMap;
	}

	public void setDetalleListadoMap(HashMap<Long, List<Valor>> detalleListadoMap) {
		this.detalleListadoMap = detalleListadoMap;
	}
	public void setListaEstados(ArrayList<SelectItem> listaEstados) {
		this.listaEstados = listaEstados;
	}

	public ArrayList<SelectItem> getListaEstadosRegistro() {
		return SingletonUtil.obtenerDetalleListados(detalleListadoMap,ConstantesGenerales.LISTADO_ESTADOS,ConstantesGenerales.SELECCIONE, ConstantesGenerales.VALOR_SELECCIONE);
	}

	public void setListaEstadosRegistro(ArrayList<SelectItem> listaEstadosRegistro) {
		this.listaEstadosRegistro = listaEstadosRegistro;
	}

}
